Garbage collection is a memory management technique, which attempts to reclaim memory occupied by objects that are no longer in use by a program. Garbage collection may take a significant proportion of total processing time in a program and, as a result, can have significant influence on performance.
Generational collectors segregate recently allocated objects from older objects in order to focus more garbage collection work on reclaiming recently allocated objects. This is particularly well suited for single threaded long running applications. Garbage collectors trigger garbage collector cycles based on, for example, the amount of memory allocated.